package staticDemo;

public class blockS {
    static int number = 60;

    static String schoolName;

    /*
        静态代码块：
            格式： static{}
            特点： 类加载时自动执行，由于类只会加载一次，所以静态代码块也只会执行一次
            作用： 完成类的初始化，例如：对类变量的初始化赋值
     */

    static {
        System.out.println("静态代码块执行了");
        schoolName = "河马";
    }

    /*
     *  实例代码块：
     *  格式： {}
     *  特点：每次创建对象时，执行实例代码块，并在构造器前执行
     *  作用： 和构造器一样，都是用来完成对象的初始化的，例如：对象变量进行初始化赋值
     * */

    int age;

    // 实例代码块
    {
        System.out.println("实例代码块执行了");
//        age = 18;

        // 可以把 构造器中重复的代码块写在实例代码块中 只写一次 减少构造器中重复代码的编写
        System.out.println("有人创建了对象，" + this);
    }

    // 无参构造器
    public blockS() {
        System.out.println("无参构造器执行了");

    }

    // 有参构造器
    public blockS(String name) {
        System.out.println("有参构造器执行了");
    }

}
